package pe.gob.onpe.ctrlNegocio;

import java.util.List;

import javax.ejb.Remote;

import pe.gob.onpe.pojo.BusquedaPadronSolicitantePojo;
import pe.gob.onpe.pojo.BusquedaProcesosElectoralesPojo;
import pe.gob.onpe.pojo.EstadoCivilPojo;
import pe.gob.onpe.pojo.InstitucionSolicitantePojo;
import pe.gob.onpe.pojo.OficinaDespachoPojo;
import pe.gob.onpe.pojo.ProcesoElectoralPojo;
import pe.gob.onpe.pojo.SexoPojo;
import pe.gob.onpe.pojo.TipoEleccionPojo;
import pe.gob.onpe.pojo.UbigeoPojo;
import pe.gob.onpe.pojo.VistaComparaPadronPojo;

@Remote
public interface CNPrepararEleccion {

	List<EstadoCivilPojo> listadoEstadoCivil();

	List<UbigeoPojo> listadoUbigeoPorPadre(String ubigeoPadre);

	List<SexoPojo> listadoSexo();
	
	List<OficinaDespachoPojo> lisOficinaDespachoPorProcElect(Long procesoElectoralId);

	String registrarElector(String dni, String apellidoPaterno,
			String apellidoMaterno, String nombre, String fechaNacimiento,
			String sexo, String estadoCivil, String grupoVotacion,
			String correoElectronico, Long oficinaDespacho, String distrito,
			String direccion, Long procesoElectoralId);
	
	public ProcesoElectoralPojo obternerProcesoElectoral(Long procesoElectoralId);
	
	public Long obtenerCantidadRegistrosPadronElectoral();
	
	public String obtenerFechaPadronONPE();
	
	public Long obtenerCantidadRegistrosPadronSolicitante(Long procesoElectoralId);
	
	public List<VistaComparaPadronPojo> obtenerComparacionPadron(Long procesoElectoralId);
	
	public Long obtenerCantidadRegistrosComparadosEleccion(Long procesoElectoralId);

	public List<TipoEleccionPojo> tipoEleccionPorProcesoElectoral(Long procesoElectoralId);

	public BusquedaProcesosElectoralesPojo obtenerProcesosElectorales(String nombre,String descripcion,int inicio,int cantidad);

	public boolean eliminarProcesoElectoral(Long idProcesoElectoral);

	public boolean modificarProcesoElectoral(Long idProcesoElectoral, Long idInstitucionSolicitante,
											String nombre,String descripcion,
											Integer duracionSesion, Integer numeroIntentos);

	List<OficinaDespachoPojo> listadoOficinaDespacho();

	List<InstitucionSolicitantePojo> listadoInstitucionSolicitante();

	boolean registrarProcesoElectoral(Long idProcesoElectoral, Long idInstitucionSolicitante, 
										String nombre, String descripcion,
										Integer duracionSesion, Integer numeroIntentos);
	
	public BusquedaPadronSolicitantePojo buscarPadronSolicitante(Long procesoElectoralId,String numeroDocumento,String nombre,String apellidoPaterno,String apellidoMaterno,String incosistencia,String estadoIncosistencia,int inicio,int fin);
	
	boolean modificarPadronSolicitante(Long procesoElectoralId, String dni,
										String apaterno, String amaterno, String nombres,
										String incosistencia, String eincosistencia);
	
	boolean eliminarPadronSolicitante(Long idProceso,String dni);
	
	boolean registrarPadronSolicitante(Long procesoElectoralId, String dni, String apaterno, String amaterno, String nombres, String incosistencia, String eincosistencia);
}
